home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 63.zip / BS1 part 63 / Video Tracker dev. kit d1.adf / Source / Plasma.s < prev    next >
Text File  |  1993-08-09  |  39KB  |  2,033 lines

  1. rout            ;when this is off, the routine-file will be
  2.             ;assembled, on=testing
  3.             
  4. ;debug            ;when this is on, colors in the background will
  5.             ;show how much time the routine needs.
  6.  
  7.  
  8. routinemode    equ    4150    ;the routinemode !
  9.  
  10.  
  11. ; the first part of the source handles the things that are necessary to
  12. ; show the picture/copper and playing of the routine.
  13. ; the part between the "***" lines is the routine-source.
  14. ; at the bottom of the file, there are the necessary incbin-files who
  15. ; are needed to test the routine.
  16. ; these are saved with "save effect" in videotracker. they are raw
  17. ; data files which can be fonts,pictures,landscapes,vectorobjects
  18. ; etcetra.
  19. ; the incbin-files are put in the "variables" table, in the routine-
  20. ; player-handler
  21. ; the place where it's done can be found by searching for "!!!"
  22.  
  23.  
  24.     opt    a+    ;devpac 3 optimize
  25.     opt    o+
  26.  
  27.     ifd    rout
  28.     
  29.     ;videotracker routine-test
  30.  
  31.     incdir    "videotracker:include/"
  32.     include    "exec/types.i"
  33.     include    "graphics/gfxbase.i"
  34.     include    "lvo/graphics_lib.i"
  35.     incdir    'videotracker:effect/'
  36.  
  37. vew_wid    equ    44
  38. vew_hgt    equ    290
  39. win_hgt    equ    117
  40. win_str    equ    $1a
  41.  
  42.     SECTION    1,CODE_C
  43. tus
  44.  
  45.     lea    var,a0            ;communication-table
  46. ;    move.l    #rotinc,var_cols1(a0)    ;incbinfile !!!
  47.  
  48.     move.l    ($4).w,a6
  49.     sub.l    a1,a1
  50.     jsr    -$126(a6)        ;findtask
  51.     move.l    d0,curtsk
  52.     move.l    d0,a0
  53.     move.l    $b8(a0),tskpri
  54.  
  55.     lea    dosnam,a1        ;doslib openen
  56.     moveq.l    #0,d0
  57.     move.l    (4).w,a6
  58.     jsr    -408(a6)        ;openlib
  59.     move.l    d0,doslib
  60.  
  61.     bsr.s    label5            ;videotracker opstarten
  62.     
  63.     move.l    curtsk,a0
  64.     move.l    tskpri,$b8(a0)
  65.     move.l    ($4).w,a6
  66.     jsr    -$84(a6)        ;forbid
  67.  
  68.     move.l    doslib,a1
  69.     move.l    (4).w,a6
  70.     jsr    -414(a6)        ;closelib
  71.  
  72.     moveq.l    #0,d0
  73.     rts
  74.     
  75. label5
  76.     move.l    (4).w,a6        ;workbench gedoe
  77.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  78.  
  79.     cmp.b    #50,ntscmode        ;ntsc ?
  80.     beq.s    str.ntsc
  81.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  82. str.ntsc
  83.  
  84.     move.l    (4).w,a6        ;68030 cache off 
  85.     jsr    -120(a6)
  86.  
  87.     btst.b    #1,297(a6)
  88.     beq.s    str.nfc
  89.     lea.l    str.ft,a5
  90.     jsr    -30(a6)
  91. str.nfc
  92.     jsr    -126(a6)
  93.     bra.s    str.fc
  94.     
  95. str.ft
  96.     dc.w    $4e7a,2
  97.     bclr    #0,d0
  98.     bset    #13,d0
  99.     dc.w    $4e7b,2
  100.     rte
  101. str.fc
  102.  
  103.     lea    cprjmp,a2        ;copjmp zetten !
  104.     move.l    #cprbck-8,d0
  105.     move.w    d0,6(a2)
  106.     swap    d0
  107.     move.w    d0,2(a2)
  108.  
  109.     lea    cprbck-8,a2        ;copstr zetten !
  110.     move.l    #cpr,d0
  111.     move.w    d0,6(a2)
  112.     swap    d0
  113.     move.w    d0,2(a2)
  114.  
  115.     bsr    cprsprrem        ;sprites legen
  116.  
  117.     lea    gfxnam,a1        ;graphics lib openen
  118.     move.l    (4).w,a6
  119.     jsr    -408(a6)        ;openlib
  120.     move.l    d0,a6
  121.     move.l    d0,gfxlib
  122.     move.l    38(a6),oldcprlist
  123.  
  124.     bset    #1,$bfe001
  125.     bsr    copbuf            ;copper vullen
  126.  
  127.     bsr    sysoff
  128.  
  129. gadrun
  130.     btst    #6,($bfe001).l
  131.     bne    gadrun
  132.  
  133. scrend
  134. scrend.play
  135.     bsr    syson
  136.  
  137.     move.l    gfxlib,a1
  138.     move.l    (4).w,a6
  139.     jsr    -414(a6)        ;closelib
  140.  
  141. scrend.qb
  142.     moveq.l    #0,d0    
  143.     rts
  144.     
  145.     ;vertical blank interrupt, no blits.
  146.     ;handles counters,interlace,sprite
  147.     ;level 3
  148.  
  149. intvb
  150.     bra.s    intvb.cnt
  151.     dc.l    'VIDU'
  152.     dc.l    'LOOP'
  153. intvb.cnt
  154.     movem.l    d0-d7/a0-a6,-(sp)
  155.     lea    ($dff000).l,a6
  156.  
  157.     move.w    $01e(a6),d0
  158.     btst    #5,d0            ;vblank ?
  159.     bne.s    intvb.vb
  160.  
  161.     bra.s    intcop.end
  162.  
  163. intvb.vb
  164.     bsr    grap
  165.     bsr    palctr            ;palette zetten
  166.     bsr.s    copbuf            ;copper vullen
  167.     
  168. intvb.end
  169.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  170.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  171.     rte
  172.  
  173. intcop.end
  174.     movem.l    (sp)+,d0-d7/a0-a6
  175.     move.l    intvbold,-(sp)
  176.     rts
  177.  
  178.     ;transmission buffer empty routine, BLIT !
  179.     ;handles routines,animations
  180.     
  181. inttbe                    ;tbe interrupt
  182.     movem.l    d0-d7/a0-a6,-(sp)
  183.     lea    ($dff000).l,a6
  184.  
  185.     move.w    $01e(a6),d0
  186.     btst    #0,d0            ;no tbe ?
  187.     beq.s    intdskblk
  188.  
  189.  
  190.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  191.     beq.s    inttbe.cop
  192.     btst    #2,($dff016).l
  193.     beq.s    inttbe.cop
  194.  
  195.     ifd    debug
  196.     move.w    #$700,$dff180
  197.     endc
  198.     
  199.     bsr    rotply            ;routineplayer BLIT !
  200.     bsr.s    copbuf            ;copper vullen
  201.  
  202.     ifd    debug
  203.     move.w    #$070,$dff180
  204.     endc
  205.     
  206. inttbe.cop
  207.  
  208. inttbe.end
  209.     move.w    #$0001,$09c(a6)
  210.     movem.l    (sp)+,d0-d7/a0-a6
  211.     rte
  212.  
  213. intdskblk
  214.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  215.     movem.l    (sp)+,d0-d7/a0-a6
  216.     move.l    inttbeold,-(sp)
  217.     rts
  218.  
  219.  
  220.     ;moves the copperbuffer to the copperlist
  221.     ;sort of double buffering
  222.     
  223. copbuf
  224.     movem.l    d0-d7/a0-a6,-(sp)
  225.  
  226.     lea    ($dff000).l,a6
  227.  
  228. copbuf.novb                ;copperchange overslaan
  229.     moveq.l    #0,d0
  230.     move.b    $005(a6),d0
  231.     lsl.w    #8,d0
  232.     moveq.l    #0,d1
  233.     move.b    $006(a6),d1
  234.     add.w    d1,d0
  235.  
  236.     cmp.w    #$4,d0
  237.     blt    copbuf.novb
  238.  
  239.     cmp.b    #50,ntscmode
  240.     beq.s    copbuf.pal
  241.     cmp.w    #$133-56-8,d0        ;ntsc grens
  242.     bge    copbuf.novb
  243.     bra.s    copbuf.cont
  244. copbuf.pal
  245.     cmp.w    #$133-8,d0        ;pal grens
  246.     bge    copbuf.novb
  247. copbuf.cont
  248.  
  249.     lea    gra.s,a0        ;buffer copieren
  250.     lea    cprbuf,a1
  251.  
  252.     move.w    00*4+2(a0),00*4+2(a1)
  253.     move.w    01*4+2(a0),01*4+2(a1)
  254.     move.w    02*4+2(a0),02*4+2(a1)
  255.     move.w    03*4+2(a0),03*4+2(a1)
  256.     move.w    04*4+2(a0),04*4+2(a1)
  257.     move.w    05*4+2(a0),05*4+2(a1)
  258.     move.w    06*4+2(a0),06*4+2(a1)
  259.     move.w    07*4+2(a0),07*4+2(a1)
  260.     move.w    08*4+2(a0),08*4+2(a1)
  261.     move.w    09*4+2(a0),09*4+2(a1)
  262.  
  263.     move.w    10*4+2(a0),10*4+2(a1)
  264.     move.w    11*4+2(a0),11*4+2(a1)
  265.     move.w    12*4+2(a0),12*4+2(a1)
  266.     move.w    13*4+2(a0),13*4+2(a1)
  267.     move.w    14*4+2(a0),14*4+2(a1)
  268.     move.w    15*4+2(a0),15*4+2(a1)
  269.     move.w    16*4+2(a0),16*4+2(a1)
  270.     move.w    17*4+2(a0),17*4+2(a1)
  271.     move.w    18*4+2(a0),18*4+2(a1)
  272.     move.w    19*4+2(a0),19*4+2(a1)
  273.  
  274.     move.w    20*4+2(a0),20*4+2(a1)
  275.     move.w    21*4+2(a0),21*4+2(a1)
  276.     move.w    22*4+2(a0),22*4+2(a1)
  277.     move.w    23*4+2(a0),23*4+2(a1)
  278.     move.w    24*4+2(a0),24*4+2(a1)
  279.     move.w    25*4+2(a0),25*4+2(a1)
  280.     move.w    26*4+2(a0),26*4+2(a1)
  281.     move.w    27*4+2(a0),27*4+2(a1)
  282.     move.w    28*4+2(a0),28*4+2(a1)
  283.     move.w    29*4+2(a0),29*4+2(a1)
  284.  
  285.     move.w    30*4+2(a0),30*4+2(a1)
  286.     move.w    31*4+2(a0),31*4+2(a1)
  287.     move.w    32*4+2(a0),32*4+2(a1)
  288.     move.w    33*4+2(a0),33*4+2(a1)
  289.     move.w    34*4+2(a0),34*4+2(a1)
  290.     move.w    35*4+2(a0),35*4+2(a1)
  291.     move.w    36*4+2(a0),36*4+2(a1)
  292.     move.w    37*4+2(a0),37*4+2(a1)
  293.     move.w    38*4+2(a0),38*4+2(a1)
  294.     move.w    39*4+2(a0),39*4+2(a1)
  295.  
  296.     move.w    40*4+2(a0),40*4+2(a1)
  297.     move.w    41*4+2(a0),41*4+2(a1)
  298.     move.w    42*4+2(a0),42*4+2(a1)
  299.     move.w    43*4+2(a0),43*4+2(a1)
  300.     move.w    44*4+2(a0),44*4+2(a1)
  301.     move.w    45*4+2(a0),45*4+2(a1)
  302.     move.w    46*4+2(a0),46*4+2(a1)
  303.     move.w    47*4+2(a0),47*4+2(a1)
  304.     move.w    48*4+2(a0),48*4+2(a1)
  305.     move.w    49*4+2(a0),49*4+2(a1)
  306.  
  307.     move.w    50*4+2(a0),50*4+2(a1)
  308.     move.w    51*4+2(a0),51*4+2(a1)
  309.     move.w    52*4+2(a0),52*4+2(a1)
  310.     move.w    53*4+2(a0),53*4+2(a1)
  311.     move.w    54*4+2(a0),54*4+2(a1)
  312.  
  313. copbuf.end
  314.     movem.l    (sp)+,d0-d7/a0-a6
  315.     rts
  316.  
  317.     ;goes back to the workbench
  318.     
  319. syson
  320.     movem.l    d0-d7/a0-a6,-(sp)
  321.  
  322.     move.w    #$0001,$dff09a        ;tbeint uit
  323.     move.l    intvbold,($6c).w
  324.     move.l    inttbeold,($64).w
  325.  
  326.     move.l    4,a6
  327.     jsr    -138(a6)        ;permit
  328.  
  329.     move.l    gfxlib,a6
  330.     jsr    -462(a6)        ;disownblitter
  331.  
  332.     move.l    wbview,a1
  333.     move.l    gfxlib,a6
  334.     jsr    _LVOLoadView(a6)     ; Fix view
  335.     jsr    _LVOWaitTOF(a6)
  336.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  337.  
  338. syson.ras
  339.     cmp.b    #$c0,$dff006        ;prevent copperjump
  340.     bne    syson.ras
  341.  
  342.     move.l    gfxlib,a6
  343.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  344.  
  345.     movem.l    (sp)+,d0-d7/a0-a6
  346.     rts
  347.     
  348.     ;goes back to the gadgetscreen
  349.     
  350. sysoff
  351.     movem.l    d0-d7/a0-a6,-(sp)
  352.      
  353.     move.l    gfxlib,a6
  354.     move.l    gb_ActiView(a6),wbview    ;current view
  355.     sub.l    a1,a1            ; clear a1
  356.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  357.     jsr    _LVOWaitTOF(a6)     ; Wait once
  358.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  359.  
  360.     move.l    gfxlib,a6
  361.     jsr    -456(a6)        ;ownblitter
  362.  
  363.     move.l    4,a6
  364.     jsr    -132(a6)        ;forbid
  365.         
  366.     move.l    ($6c).w,intvbold
  367.     move.l    #intvb,($6c).w
  368.     move.l    ($64).w,inttbeold
  369.     move.l    #inttbe,($64).w
  370.     move.w    #$8001,$dff09a        ;tbeint aan
  371.     bsr    gracpr            ;reset copper
  372.     bsr    copbuf            ;copy copper
  373.     move.l    #cpr,$dff080
  374.  
  375.     movem.l    (sp)+,d0-d7/a0-a6
  376.     rts
  377.     
  378. cprsprrem
  379.     movem.l    d0-d7/a0-a6,-(sp)
  380.     lea    cprspr,a0
  381.     move.l    #sprdat,d0
  382.     move.w    #7,d1
  383. cprsprrem.a
  384.     move.w    d0,3*2(a0)
  385.     swap    d0
  386.     move.w    d0,1*2(a0)
  387.     swap    d0
  388.     add.l    #8,a0
  389.     dbra    d1,cprsprrem.a
  390.     movem.l    (sp)+,d0-d7/a0-a6
  391.     rts
  392.  
  393. varset                    ;variablen neerzetten
  394.     movem.l    d0-d7/a0-a6,-(sp)
  395.     move.l    #var,a0
  396.  
  397.     move.l    #cprbck,var_cprbck(a0)
  398.     move.l    gfxlib,var__GfxBase(a0)
  399.     move.b    ntscmode,var_ntsc(a0)
  400.  
  401.     move.l    curpic1,var_pic1(a0)    ;variabel
  402.     move.l    curpic2,var_pic2(a0)    ;variabel
  403.     move.w    anispd1,var_anispd1(a0)
  404.     move.w    anitel1,var_anitel1(a0)
  405.     movem.l    (sp)+,d0-d7/a0-a6
  406.     rts
  407.     
  408.     ;this routine handles all videotracker-routines
  409.  
  410. rotply    
  411.     movem.l    d0-d7/a0-a6,-(sp)
  412.  
  413.     moveq.l    #0,d0
  414.  
  415.     lea    currot1,a2        ;routine 1
  416.     move.w    rotinf1,d0        ;routine info
  417.     bsr.s    rotplyr
  418.  
  419. rotply.end
  420.     movem.l    (sp)+,d0-d7/a0-a6
  421.     rts
  422.  
  423.     ;this routine handles 1 routine, BLIT !
  424.     
  425. rotplyr
  426.     movem.l    d0-d7/a1-a6,-(sp)
  427.  
  428.     move.l    #rot,(a2)        ;routinestart address
  429.  
  430.     move.b    #50,ntscmode        ;ntsc/pal hz
  431.     clr.l    curpic2            ;background picture
  432.     move.w    #1,anispd1        ;animationspeed
  433.     clr.w    anitel1            ;animation position
  434.  
  435.     lea    var,a0            ;communication-table
  436.  
  437.  
  438.     move.l    #routinemode,d0        ;routinemode !!!
  439.  
  440.     sub.l    a0,a0            ;picture info legen
  441.  
  442.     tst.l    (a2)            ;is er een routine ?
  443.     beq    rotplyr.end        ;interlace handling
  444.  
  445.     move.l    intdel,d2        ;delay
  446.     move.l    inttel,d1        ;teller
  447.     cmp.w    d2,d1
  448.     blt    rotplyr.end
  449.     clr.l    inttel
  450.                 
  451.     bsr    varset            ;variabelen updaten
  452.  
  453.     move.l    (a2),a1            ;routine halen
  454.     move.l    #var,a0            ;variablen tabel
  455.  
  456.     movem.l    d3-d7/a1-a6,-(sp)
  457.     moveq.l    #0,d1            ;vars wissen
  458.     moveq.l    #0,d2
  459.     moveq.l    #0,d3
  460.     moveq.l    #0,d4
  461.     moveq.l    #0,d5
  462.     moveq.l    #0,d6
  463.     moveq.l    #0,d7
  464.     sub.l    a2,a2
  465.     sub.l    a3,a3
  466.     sub.l    a4,a4
  467.     sub.l    a5,a5
  468.  
  469.     jsr    4(a1)            ;routine afwerken
  470.     movem.l    (sp)+,d3-d7/a1-a6
  471.  
  472.     ;Routine:
  473.     ;
  474.     ;Input:
  475.     ;a0=variabelentabel
  476.     ;d0=routinemode
  477.     ;
  478.     ;Output:
  479.     ;a0=picture
  480.     ;d1=copperlist
  481.     ;d2=interruptdelay        (NOT used till now)
  482.     
  483.     move.w    #$0020,$dff09a        ;vb off !
  484.  
  485.     move.l    d2,intdel        ;delay
  486.  
  487.     lea    cprjmp,a3
  488.     move.l    #cprbck-8,d0
  489.  
  490.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  491.     bne.s    rotplyr.nocop
  492.     tst.l    d1            ;copperlist ?
  493.     beq.s    rotplyr.nocop
  494.     move.l    d1,d0
  495. rotplyr.nocop
  496.     move.w    d0,6(a3)
  497.     swap    d0
  498.     move.w    d0,2(a3)
  499.  
  500.     cmp.l    #0,a0            ;picture ?
  501.     beq.s    rotplyr.endvb
  502.  
  503.     move.l    a0,curpic1        ;current picture (cycle)
  504.     move.l    a0,curpal1        ;current palette
  505.  
  506.     tst.b    rotdpl            ;plane is geleverd
  507.     beq.s    rotplyr.set
  508.     clr.b    rotdpl
  509.     clr.l    cycdel1            ;cycle info wissen
  510.     clr.l    4+cycdel1
  511.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  512. rotplyr.set
  513.     clr.b    dplctr
  514.     bsr.s    grap
  515.     bsr    grac            ;colorset
  516. rotplyr.endvb
  517.     move.w    #$8020,$dff09a
  518. rotplyr.end
  519.     movem.l    (sp)+,d0-d7/a1-a6
  520.     rts
  521.  
  522.     ;removes possible routine-coppers
  523.     
  524. gracpr
  525.     movem.l    d0-d7/a0-a6,-(sp)
  526.     lea    cprjmp,a3
  527.     move.l    #cprbck-8,d0        ;copperlist resetten
  528.     move.w    d0,6(a3)
  529.     swap    d0
  530.     move.w    d0,2(a3)
  531.     movem.l    (sp)+,d0-d7/a0-a6
  532.     rts
  533.  
  534.     ;picture-to-copper routine, communicates with the
  535.     ;anim-player
  536.     
  537. grap                    ;d7=anim
  538.     movem.l    d0-d7/a0-a6,-(sp)
  539.  
  540.     clr.l    d7
  541.     
  542.     tst.l    curpic1            ;current picture ?
  543.     beq    grap.end
  544.  
  545.     move.l    curpic1,a2        ;normal pic halen
  546.  
  547.     lea    gracprscr,a1        ;window neerzetten
  548.     move.l    hogscr,d1
  549.  
  550.     move.w    pic_hgt(a2),d3        ;pic hoogte
  551.     move.w    pic_vew(a2),d5
  552.     btst    #2,d5            ;interlace ?
  553.     beq.s    grap.nohi4
  554.     lsr.w    #1,d3            ;/2
  555. grap.nohi4
  556.     cmp.w    d3,d1
  557.     bge.s    grap.hog
  558.     move.w    d1,d3
  559. grap.hog
  560.     sub.w    d3,d1
  561.     lsr.w    #1,d1
  562.     add.w    #win_str,d1
  563.     move.w    d1,d2
  564.     add.w    d3,d2
  565.  
  566.  
  567.     move.b    d1,2(a1)        ;y start
  568.     move.b    d2,6(a1)        ;y end
  569.  
  570.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  571.     lsl.l    #3,d4
  572.  
  573.     move.l    #vew_wid*8,d0
  574.     move.l    #0,d1
  575.     move.l    #$71,d6
  576.  
  577.     move.w    pic_vew(a2),d5
  578.     btst    #15,d5            ;hires ?
  579.     beq.s    grap.nohi2
  580.  
  581.     move.l    #(vew_wid-4)*8*2,d0
  582.     move.l    #1,d1
  583.     move.l    #$81,d6
  584.  
  585.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  586.     ble.s    grap.nohi2
  587.     move.l    #(vew_wid)*8*2,d0
  588.     move.l    #$61,d6
  589.  
  590. grap.nohi2    
  591.     btst    #6,d5            ;super hires ?
  592.     beq.s    grap.noshi2
  593.  
  594.     move.l    #(vew_wid-4)*8*4,d0
  595.     move.l    #2,d1
  596.     move.l    #$81,d6
  597.  
  598.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  599.     ble.s    grap.noshi2
  600.     move.l    #(vew_wid)*8*4,d0
  601.     move.l    #$61,d6
  602.  
  603. grap.noshi2    
  604.  
  605.     clr.w    d5
  606.     cmp.w    d0,d4            ;breeder dan scherm ?
  607.     ble.s    grap.c
  608.     move.w    d4,d5
  609.     move.w    d0,d4
  610.     sub.w    d0,d5            ;modulo
  611.     lsr.w    #3,d5            ;/8
  612. grap.c
  613.     lsr.w    d1,d0
  614.     lsr.w    d1,d4
  615.  
  616.     move.w    d0,d2
  617.     sub.w    d4,d2
  618.     lsr.w    #1,d2            ;/2
  619.  
  620.     add.w    d6,d2
  621.     move.b    d2,3(a1)        ;x start
  622.     move.w    d2,d3            ;d3 bewaren !
  623.  
  624.     add.w    d4,d2            ;d4 bewaren !
  625.     move.b    d2,7(a1)        ;x end
  626.     
  627.     move.w    pic_vew(a2),d6
  628.     btst    #15,d6            ;hires ?
  629.     beq.s    grap.nohi5    
  630.     add.l    d4,d4            ;*2
  631. grap.nohi5
  632.     btst    #6,d6            ;super hires ?
  633.     beq.s    grap.noshi5    
  634.     add.l    d4,d4            ;*4
  635. grap.noshi5
  636.  
  637.     move.l    d7,-(sp)
  638.     move.w    pic_vew(a2),d6
  639.     move.l    #17,d0
  640.     move.l    #1,d1
  641.     move.l    #3,d7
  642.  
  643.     btst    #15,d6            ;hires ?
  644.     beq.s    grap.nohi3    
  645.     move.l    #9,d0
  646.     move.l    #2,d1
  647.     move.l    #2,d7
  648. grap.nohi3
  649.     btst    #6,d6            ;super hires ?
  650.     beq.s    grap.noshi3    
  651.     move.l    #9,d0
  652.     move.l    #2,d1
  653.     move.l    #1,d7
  654. grap.noshi3
  655.     sub.w    d0,d3
  656.     lsr.w    #1,d3
  657.     move.w    d3,10(a1)        ;ddfstrt
  658.     
  659.     move.w    d4,d2            ;pic breedte in pixels
  660.     lsr.w    #4,d2            ;/16
  661.     sub.w    d1,d2            ;-1
  662.  
  663.     lsl.w    d7,d2            ;*8
  664.     add.w    d2,d3
  665.     move.w    d3,14(a1)        ;ddfstop
  666.     move.l    (sp)+,d7
  667.     
  668.     lea    pic_raw(a2),a0
  669.  
  670.     moveq.l    #0,d2
  671.     move.w    pic_dpt(a2),d2
  672.     sub.l    #1,d2
  673.     muls    pic_wid(a2),d2
  674.     add.w    d2,d5
  675.  
  676.     move.w    pic_vew(a2),d2        ;viewmode add
  677.     btst    #2,d2
  678.     beq.s    grap.nolace4
  679.  
  680.     moveq.l    #0,d2
  681.     move.w    pic_dpt(a2),d2
  682.     muls    pic_wid(a2),d2
  683.     add.w    d2,d5            ;interlace gedoe
  684. grap.nolace4
  685.  
  686.     lea    gracprbpl,a4        ;iffpln neerzetten
  687.     lea    gracprpln,a0        ;iffpln neerzetten
  688.     moveq.l    #0,d2
  689.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  690.     move.l    #8,d6            ;copper step !
  691.  
  692.     tst.l    curpic2            ;2de picture ?
  693.     bne.s    grap.pic2
  694. grap.nopic2
  695.     move.w    d5,34(a1)        ;modulo oneven zetten
  696.     bra    grap.nodpl
  697. grap.pic2
  698.     move.l    curpic2,a3        ;oneven plane
  699.     move.l    currot2,a5        ;oneven plane
  700.     clr.l    curpic2            ;mischien niet goed
  701.     clr.l    curpal2            ;mischien niet goed
  702.     clr.l    currot2            ;mischien niet goed
  703.  
  704.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  705.     beq    grap.nopic2
  706.     
  707.     cmp.l    #0,currot1        ;routine ?    
  708.     beq.s    grap.norot
  709.     cmp.l    currot1,a5        ;routine hetzelfde ?
  710.     beq    grap.nopic2
  711. grap.norot
  712.  
  713.     cmp.b    #3,d2            ;> 8 kleuren ?
  714.     bgt    grap.nopic2
  715.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  716.     cmp.b    d2,d3            ;gelijke plnummers ?
  717.     bne    grap.nopic2
  718.     move.w    pic_vew(a2),d1
  719.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  720.     bne    grap.nopic2
  721.  
  722.     move.w    pic_vew(a2),d1        ;groter dan view test
  723.     btst    #6,d1            ;super hires ?
  724.     beq.s    grap.nohi2a
  725.     move.l    #vew_wid*4,d1
  726.     bra.s    grap.nohi2b
  727. grap.nohi2a
  728.     btst    #15,d1            ;hires ?
  729.     beq.s    grap.noshi2a
  730.     move.l    #vew_wid*2,d1
  731.     bra.s    grap.nohi2b
  732. grap.noshi2a
  733.     move.l    #vew_wid,d1
  734. grap.nohi2b
  735.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  736.     bgt.s    grap.small
  737.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  738.     bgt.s    grap.small
  739.  
  740.     move.w    pic_vew(a2),d1
  741.     btst    #2,d1
  742.     beq.s    grap.nolace8a
  743.     move.l    hogscr,d1
  744.     add.l    d1,d1
  745.     bra.s    grap.nolace8b
  746. grap.nolace8a
  747.     move.l    hogscr,d1
  748. grap.nolace8b
  749.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  750.     bgt.s    grap.small
  751.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  752.     bgt.s    grap.small
  753.     bra.s    grap.big
  754.  
  755. grap.small
  756.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  757.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  758.     bne    grap.nopic2
  759.     move.w    pic_wid(a2),d1
  760.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  761.     bne    grap.nopic2
  762.  
  763. grap.big
  764.     move.l    a3,curpic2
  765.     move.l    a3,curpal2
  766.     move.l    a5,currot2
  767.  
  768.     tst.b    dplctr            ;double playfield al gezet ?
  769.     beq.s    grap.nocop
  770.  
  771.     move.w    30(a1),34(a1)        ;modulo copieren
  772.  
  773.     move.w    2(a4),d1        ;bplcon0
  774.     btst    #10,d1            ;al double playfield ?
  775.     beq.s    grap.ta
  776.  
  777.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  778.     move.w    6(a0),14(a0)
  779.  
  780.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  781.     move.w    22(a0),30(a0)
  782.  
  783.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  784.     move.w    38(a0),46(a0)
  785.  
  786.     bra.s    grap.tb
  787. grap.ta
  788.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  789.     move.w    22(a0),46(a0)
  790.  
  791.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  792.     move.w    14(a0),30(a0)
  793.  
  794.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  795.     move.w    6(a0),14(a0)
  796.  
  797. grap.tb
  798.     move.l    #palette,a3        ;palette copieren
  799.  
  800.     move.w    #8-1,d1
  801. grap.pal
  802.     move.w    (a3)+,14(a3)
  803.     dbra    d1,grap.pal
  804.  
  805. grap.nocop
  806.     add.w    d3,d2
  807.     lsl.w    #8,d2
  808.     lsl.w    #4,d2
  809.     or.w    #$400,d2
  810.     move.w    d2,2(a4)        ;bplcon0
  811.  
  812.     movem.l    d0-d7/a0-a6,-(sp)
  813.  
  814.     move.l    curpic,a2        ;animpic ?
  815.     move.l    curfrm,d7
  816.     cmp.l    #0,a2
  817.     bne.s    grap.noanipic
  818.  
  819.     move.l    curpic2,a2        ;normal pic ?
  820.     move.l    curfrm2,d7
  821.     cmp.l    #0,a2
  822.     beq.s    grap.nodplpic
  823.  
  824. grap.noanipic
  825.     add.l    d6,a0
  826.     add.w    d6,d6
  827.     bsr.s    grappln            ;a2,d6,d7,d0
  828. grap.nodplpic
  829.     movem.l    (sp)+,d0-d7/a0-a6
  830.     add.w    d6,d6
  831.     bra.s    grap.nodpla
  832.  
  833.  
  834. grap.nodpl                ;geen double playfield
  835.     lsl.w    #8,d2
  836.     lsl.w    #4,d2
  837.     move.w    d2,2(a4)        ;bplcon0
  838.  
  839. grap.nodpla
  840.     move.w    d5,30(a1)        ;modulo even
  841.  
  842.     moveq.l    #0,d3
  843.     add.w    pic_vew(a2),d3        ;viewmode add
  844.     moveq.l    #0,d2
  845.     move.w    2(a4),d2
  846.     or.l    d3,d2
  847.     or.l    #$300,d2        ;genlock info
  848.     move.w    d2,2(a4)
  849.     
  850.     bsr.s    grappln            ;a2,d6,d7,d0
  851.  
  852. grap.end
  853.     
  854.     movem.l    (sp)+,d0-d7/a0-a6
  855.     rts
  856.         
  857.  
  858.     ;sets on of the 2 possible pictures to the copper
  859.     ;handles interlace
  860.  
  861.     ;d7=framenummer
  862.     ;d6=copperliststap
  863.     ;d0=raw planes positie
  864.     ;a2=current picture
  865. grappln                    ;planes invullen 
  866.     movem.l    d0-d7/a0-a6,-(sp)
  867.  
  868.     lea    pic_raw(a2),a1
  869.     move.l    a1,d0            ;raw planes
  870.     
  871.     moveq.l    #0,d2            ;x*y
  872.     move.w    pic_wid(a2),d2
  873.     lsr.l    #1,d2            ;/2
  874.     moveq.l    #0,d3
  875.     move.w    pic_hgt(a2),d3
  876.     muls    d3,d2
  877.     
  878.     move.l    d2,d4
  879.     add.l    d2,d2
  880.  
  881.     move.w    pic_dpt(a2),d3
  882.     muls    d3,d4            ;hele picture size
  883.     muls    d7,d4            ;frame*size d7 !
  884.  
  885.     add.l    d4,d4
  886.  
  887.     add.l    d4,d0
  888.  
  889.     move.l    #vew_wid,d5        ;max x view
  890.     move.l    hogscr,d4        ;max y view
  891.     move.w    pic_vew(a2),d1        ;viewmode add
  892.     btst    #2,d1
  893.     beq.s    grappln.nolace
  894.     add.l    d4,d4            ;max y view
  895. grappln.nolace
  896.     btst    #15,d1            ;hires ?
  897.     beq.s    grappln.nohi
  898.     move.l    #vew_wid*2,d5        ;max x view
  899. grappln.nohi
  900.     btst    #6,d1            ;super hires ?
  901.     beq.s    grappln.noshi
  902.     move.l    #vew_wid*4,d5        ;max x view
  903. grappln.noshi
  904.  
  905.     moveq.l    #0,d3            ;scherm centreren
  906.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  907.     cmp.w    d5,d3            ;breder dan scherm ?
  908.     ble.s    grappln.qa
  909.     sub.w    d5,d3            ;-scherm breedte
  910.     lsr.w    #2,d3            ;/4
  911.  
  912.     add.l    d3,d3
  913.  
  914.     add.l    d3,d0
  915. grappln.qa
  916.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  917.     cmp.w    d4,d3            ;hoger dan scherm ?
  918.     ble.s    grappln.qb
  919.     sub.w    d4,d3            ;-scherm breedte
  920.     lsr.w    #1,d3            ;/2
  921.     moveq.l    #0,d5
  922.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  923.     muls    pic_dpt(a2),d5
  924.     muls    d5,d3
  925.     add.l    d3,d0
  926. grappln.qb
  927.     moveq.l    #0,d2
  928.     move.w    pic_wid(a2),d2
  929.  
  930.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  931.     btst    #2,d5
  932.     beq.s    grappln.nolac7b
  933.  
  934.     move.w    $04(a6),d5        ;even/oneven ?
  935.     btst    #15,d5
  936.     beq.s    grappln.nolac7b
  937.     
  938.     moveq.l    #0,d3
  939.     move.w    pic_wid(a2),d3
  940.     muls    pic_dpt(a2),d3
  941.     add.l    d3,d0
  942. grappln.nolac7b
  943.  
  944.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  945.     tst.w    d1            ;0 planes ?
  946.     beq.s    grappln.end
  947.     sub.w    #1,d1
  948. grappln.a
  949.     move.w    d0,3*2(a0)
  950.     swap    d0
  951.     move.w    d0,1*2(a0)
  952.     swap    d0
  953.     add.l    d6,a0            ;d6=copper step !
  954.     add.l    d2,d0
  955.     dbra    d1,grappln.a
  956. grappln.end
  957.     movem.l    (sp)+,d0-d7/a0-a6
  958.     rts
  959.  
  960.     ;sets palettes to copper
  961.     
  962. grac
  963.     movem.l    d0-d7/a0-a6,-(sp)
  964.  
  965.     lea    curpal1,a3        ;palette 1
  966.     move.l    #palette,a1
  967.     bsr.s    gracfrm
  968.  
  969.     lea    curpal2,a3        ;palette 2 (dpl)
  970.     move.l    #8*2+palette,a1
  971.     bsr.s    gracfrm
  972.     
  973.     bsr.s    palctr            ;palette-buffer to copper
  974. grac.end
  975.     movem.l    (sp)+,d0-d7/a0-a6
  976.     rts
  977.         
  978.     ;moves palette from picture to palette-buffer
  979.  
  980. gracfrm
  981.     movem.l    d0-d7/a0-a6,-(sp)
  982.     tst.l    (a3)            ;palette aanwezig ?
  983.     beq.s    gracfrm.end
  984.  
  985.     move.l    (a3),a2            ;current palette
  986.     
  987.     cmp.l    #'PALE',(a2)        ;palette ?
  988.     bne.s    gracfrm.pict
  989.     lea    6(a2),a0        ;palette
  990.     move.w    4(a2),d0        ;aantal kleuren
  991.     bra.s    gracfrm.col
  992. gracfrm.pict
  993.     cmp.l    #'ANIM',(a2)        ;animatie ?
  994.     bne.s    gracfrm.noanim
  995.  
  996.     moveq.l    #0,d1
  997.     move.w    pic_ani(a2),d1
  998.     bclr    #7,d1            ;behandelbit weghalen
  999.  
  1000.     moveq.l    #0,d3
  1001.     move.w    pic_wid(a2),d3
  1002.     lsr.w    #1,d3            ;/2
  1003.     muls    pic_hgt(a2),d3
  1004.     muls    pic_dpt(a2),d3
  1005.  
  1006.     add.l    d3,d3
  1007.  
  1008.     add.l    #pic_raw,d3
  1009.     move.l    d3,d5
  1010.  
  1011.     btst    #0,d1
  1012.     bne.s    gracfrm.buf2
  1013.     moveq.l    #0,d5
  1014. gracfrm.buf2
  1015.     add.l    d5,a2
  1016. gracfrm.noanim
  1017.     lea    pic_pal(a2),a0        ;palette
  1018.     move.w    pic_palnum(a2),d0
  1019.  
  1020.     cmp.w    #32-1,d0        ;niet meer dan 32 kleuren
  1021.     ble    gracfrm.sub
  1022.     move.w    #32-1,d0
  1023. gracfrm.sub
  1024.  
  1025.     tst.w    d0            ;0 planes ?
  1026.     beq.s    gracfrm.end
  1027. gracfrm.col
  1028. gracfrm.fa
  1029.     move.w    (a0)+,(a1)+
  1030.     dbra    d0,gracfrm.fa
  1031. gracfrm.end
  1032.     movem.l    (sp)+,d0-d7/a0-a6
  1033.     rts
  1034.     
  1035.     ;handles colorcycling in the palette-buffer
  1036.     ;and copies palette-buffer to copper
  1037.  
  1038. palctr
  1039.     movem.l    d0-d7/a0-a6,-(sp)
  1040.  
  1041.     move.l    curpic1,a2        ;current raw
  1042.     cmp.l    #0,a2
  1043.     beq.s    palctr.qb
  1044.     lea    cycdel1,a3        ;cycle delays
  1045.     move.l    #palette,a4
  1046.     bsr    palcyc
  1047. palctr.qb
  1048.     move.l    curpic2,a2        ;current raw
  1049.     cmp.l    #0,a2
  1050.     beq.s    palctr.c
  1051.     lea    cycdel2,a3        ;cycle delays
  1052.     move.l    #8*2+palette,a4
  1053.     bsr    palcyc
  1054.  
  1055. palctr.c
  1056.     lea    gracprcol,a1
  1057.     move.l    #palette,a0
  1058.  
  1059.     move.w    00(a0),00*4+2(a1)
  1060.     move.w    02(a0),01*4+2(a1)
  1061.     move.w    04(a0),02*4+2(a1)
  1062.     move.w    06(a0),03*4+2(a1)
  1063.     move.w    08(a0),04*4+2(a1)
  1064.     move.w    10(a0),05*4+2(a1)
  1065.     move.w    12(a0),06*4+2(a1)
  1066.     move.w    14(a0),07*4+2(a1)
  1067.     move.w    16(a0),08*4+2(a1)
  1068.     move.w    18(a0),09*4+2(a1)
  1069.  
  1070.     move.w    20(a0),10*4+2(a1)
  1071.     move.w    22(a0),11*4+2(a1)
  1072.     move.w    24(a0),12*4+2(a1)
  1073.     move.w    26(a0),13*4+2(a1)
  1074.     move.w    28(a0),14*4+2(a1)
  1075.     move.w    30(a0),15*4+2(a1)
  1076.     move.w    32(a0),16*4+2(a1)
  1077.     move.w    34(a0),17*4+2(a1)
  1078.     move.w    36(a0),18*4+2(a1)
  1079.     move.w    38(a0),19*4+2(a1)
  1080.  
  1081.     move.w    40(a0),20*4+2(a1)
  1082.     move.w    42(a0),21*4+2(a1)
  1083.     move.w    44(a0),22*4+2(a1)
  1084.     move.w    46(a0),23*4+2(a1)
  1085.     move.w    48(a0),24*4+2(a1)
  1086.     move.w    50(a0),25*4+2(a1)
  1087.     move.w    52(a0),26*4+2(a1)
  1088.     move.w    54(a0),27*4+2(a1)
  1089.     move.w    56(a0),28*4+2(a1)
  1090.     move.w    58(a0),29*4+2(a1)
  1091.  
  1092.     move.w    60(a0),30*4+2(a1)
  1093.     move.w    62(a0),31*4+2(a1)
  1094.  
  1095.     movem.l    (sp)+,d0-d7/a0-a6
  1096.     rts
  1097.  
  1098.     ;colorcyclinghandling of a palette
  1099.  
  1100. palcyc
  1101.     movem.l    d0-d7/a0-a6,-(sp)
  1102.     move.w    #4-1,d7            ;4 cycles
  1103. palcyc.d
  1104.     tst.w    (a3)+            ;delay klaar ?
  1105.     bne.s    palcyc.c
  1106.     
  1107.     moveq.l    #0,d1
  1108.     move.b    pic_cycstr(a2),d1    ;start color
  1109.     lsl.b    #1,d1        ;*2
  1110.  
  1111.     moveq.l    #0,d2
  1112.     move.b    pic_cycend(a2),d2    ;end color
  1113.     lsl.b    #1,d2        ;*2
  1114.  
  1115.     moveq.l    #0,d3
  1116.     move.b    pic_cycadd(a2),d3    ;richting
  1117.  
  1118.     move.l    a4,a0            ;palette pointer
  1119.     move.l    a0,a1
  1120.     add.l    d1,a0            ;startcolor
  1121.     add.l    d2,a1            ;endcolor
  1122.     
  1123.     cmp.b    #1,d3            ;omhoog
  1124.     beq.s    palcyc.up
  1125.     cmp.b    #3,d3            ;omlaag
  1126.     beq.s    palcyc.down
  1127.     bra.s    palcyc.i
  1128.  
  1129. palcyc.up                ;kleuren copieren
  1130.     move.w    (a1),d4            ;laatst color bewaren
  1131. palcyc.f                ;kleuren copieren
  1132.     cmp.l    a0,a1
  1133.     beq.s    palcyc.fa
  1134.     move.w    -(a1),2(a1)
  1135.     bra    palcyc.f
  1136. palcyc.fa
  1137.     move.w    d4,(a1)
  1138.     bra.s    palcyc.g    
  1139.     
  1140. palcyc.down
  1141.     move.w    (a0),d4            ;laatst color bewaren
  1142. palcyc.h                ;kleuren copieren
  1143.     cmp.l    a0,a1
  1144.     beq.s    palcyc.ha
  1145.     move.w    2(a0),(a0)+
  1146.     bra    palcyc.h
  1147. palcyc.ha
  1148.     move.w    d4,(a1)
  1149.  
  1150. palcyc.g
  1151.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1152.     bra.s    palcyc.i
  1153. palcyc.c
  1154.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1155. palcyc.i
  1156.     add.l    #4,a2            ;next cycle info
  1157.     dbra    d7,palcyc.d
  1158.  
  1159. palcyc.qb
  1160.     movem.l    (sp)+,d0-d7/a0-a6
  1161.     rts
  1162.  
  1163.  
  1164. ;    SECTION    variabelen,DATA_c
  1165.  
  1166.     cnop    0,2
  1167. curtsk        dc.l    0
  1168. tskpri        dc.l    0
  1169. duplok        dc.l    0
  1170. inttel        dc.l    0
  1171. intdel        dc.l    0
  1172.  
  1173. form        dc.l    0
  1174. ifffil        dc.l    0
  1175. intvbold    dc.l    0
  1176. inttbeold    dc.l    0
  1177. patpos        dc.l    0
  1178. gfxlib        dc.l    0
  1179. doslib        dc.l    0
  1180. wbview      dc.l    0
  1181. mt_data        dc.l    0
  1182. memvid        dc.l    0
  1183. oldcprlist    dc.l    0
  1184. hogscr        dc.l    vew_hgt
  1185.  
  1186. inspos        dc.l    -1
  1187. anispd1        dc.w    1    ;nooit op 0 !
  1188. anispd2        dc.w    1
  1189.  
  1190.         cnop    0,2
  1191. varclr.s            ;start wissen
  1192. oldrot        dc.l    0
  1193. curpic        dc.l    0
  1194. curfrm        dc.l    0
  1195. cycdel1        ds.w    4
  1196. cycdel2        ds.w    4
  1197.  
  1198. rotinf1        dc.w    0
  1199. rotinf2        dc.w    0
  1200.  
  1201. effspd        dc.w    0
  1202. efflop        dc.b    0
  1203. anilop1        dc.b    0
  1204. anilop2        dc.b    0
  1205. anipal1        dc.b    0
  1206. anipal2        dc.b    0
  1207. rotdpl        dc.b    1
  1208. dplctr        dc.b    0
  1209.         cnop    0,2
  1210.  
  1211. insdat        ds.l    4
  1212. inspri        dc.l    0
  1213. instel        dc.w    0
  1214.  
  1215. cureff        dc.l    0
  1216. efftel        dc.w    0
  1217.  
  1218. curpal1        dc.l    0
  1219. curpal2        dc.l    0
  1220. currot1        dc.l    0
  1221. currot2        dc.l    0
  1222. curpic1        dc.l    0
  1223. curpic2        dc.l    0
  1224. anitel1        dc.w    0
  1225. anitel2        dc.w    0
  1226. curfrm1        dc.l    0
  1227. curfrm2        dc.l    0
  1228. oldfrm1        dc.l    0
  1229. oldfrm2        dc.l    0
  1230.  
  1231. varclr.e
  1232.         dc.l    0            ;wisruimte
  1233.     
  1234. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1235.     
  1236. ;ownblit    dc.b    0
  1237. ntscmode    dc.b    0
  1238. end        dc.b    0
  1239.  
  1240. pronam    dc.b    'VideoTracker',0
  1241.     cnop    0,2
  1242. dosnam    dc.b    'dos.library',0
  1243.     cnop    0,4
  1244. gfxnam    dc.b    'graphics.library',0
  1245.     cnop    0,4
  1246.     
  1247.     cnop    0,4
  1248. gra.s
  1249. gracprscr
  1250.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1251. gracprbpl
  1252.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1253.     dc.w    $108,$0000,$10a,$0000
  1254. gracprpln
  1255.     dc.w    $e0,$0000,$e2,$0000
  1256.     dc.w    $e4,$0000,$e6,$0000
  1257.     dc.w    $e8,$0000,$ea,$0000
  1258.     dc.w    $ec,$0000,$ee,$0000
  1259.     dc.w    $f0,$0000,$f2,$0000
  1260.     dc.w    $f4,$0000,$f6,$0000
  1261. gracprcol
  1262.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1263.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1264.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1265.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1266. cprjmp
  1267.     dc.w    $080,0,$082,0
  1268. gra.e
  1269. gra.ql    equ    gra.e-gra.s        ;block lengte
  1270.  
  1271.  
  1272. cpr
  1273.     dc.w    $0001,$fffe
  1274.     dc.w    $09c,$8001        ;tbeint
  1275. cprspr
  1276.     dc.w    $120,$0000,$122,$0000
  1277.     dc.w    $124,$0000,$126,$0000
  1278.     dc.w    $128,$0000,$12a,$0000
  1279.     dc.w    $12c,$0000,$12e,$0000
  1280.     dc.w    $130,$0000,$132,$0000
  1281.     dc.w    $134,$0000,$136,$0000
  1282.     dc.w    $138,$0000,$13a,$0000
  1283.     dc.w    $13c,$0000,$13e,$0000
  1284.  
  1285. cprbuf
  1286.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1287.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1288.     dc.w    $108,$0000,$10a,$0000
  1289.     dc.w    $e0,$0000,$e2,$0000
  1290.     dc.w    $e4,$0000,$e6,$0000
  1291.     dc.w    $e8,$0000,$ea,$0000
  1292.     dc.w    $ec,$0000,$ee,$0000
  1293.     dc.w    $f0,$0000,$f2,$0000
  1294.     dc.w    $f4,$0000,$f6,$0000
  1295.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1296.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1297.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1298.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1299.     dc.w    $080,0,$082,0
  1300. cprbuf.e
  1301.  
  1302.     dc.w    $088,$0000        ;copjmp2
  1303.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1304. cprbck
  1305. sprdat
  1306.     dc.w    $ffff,$fffe
  1307.  
  1308.  
  1309. prf_pat    equ    7            ;pref sample size
  1310. prf_patnum    equ    128        ;aantal songpos's
  1311. prf_len    equ    ((prf_pat*prf_patnum)+1)
  1312.  
  1313. prf_pos    equ    0            ;eff position (teller)
  1314.  
  1315. prf_effs    equ    1        ;start effect (*prf_patnum)
  1316. prf_effe    equ    2        ;end effect   (*prf_patnum)
  1317. prf_pri    equ    3            ;priority     (*prf_patnum)
  1318. prf_spd    equ    4            ;eff speed    (*prf_patnum)
  1319. prf_ani    equ    5            ;ani speed    (*prf_patnum)
  1320. prf_roth    equ    6        ;routine info (*prf_patnum)
  1321. prf_rotl    equ    7        ;routine info (*prf_patnum)
  1322.  
  1323. eff_num    equ    256            ;aantal effects
  1324.  
  1325. pic_wid        equ    4        ;wide in bytes
  1326. pic_hgt        equ    6        ;hoogte
  1327. pic_dpt        equ    8        ;number planes
  1328. pic_ani        equ    10        ;aantal effes (anim)
  1329. pic_vew        equ    12        ;viewmode
  1330. pic_cycstr    equ    14        ;cycle start (*4)
  1331. pic_cycend    equ    15        ;cycle end (*4)
  1332. pic_cycspd    equ    16        ;cycle speed (*4)
  1333. pic_cycadd    equ    17        ;cycle add (*4)
  1334. pic_palnum    equ    30        ;aantal kleuren
  1335. pic_pal        equ    32        ;palette start
  1336. pic_palsiz    equ    256*2        ;vaste palette size
  1337. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1338.  
  1339. fil_namlen    equ    24        ;naamlengte
  1340. fil_len    equ    (fil_namlen+4+4)    ;effect info length
  1341. fil_num    equ    2+eff_num        ;aantal files
  1342. fil_fil    equ    0            ;file naam 
  1343. fil_dir    equ    24            ;pointer naar directory
  1344. fil_pnt    equ    28            ;pointer naar meminfo
  1345.  
  1346. palette    ds.w    64    ;palette
  1347.  
  1348. var_len        equ    $300        ;lengte vartabel
  1349.  
  1350. var__GfxBase    equ    $000        ;graphics lib
  1351. var_pic1    equ    $004        ;current picture
  1352. var_anispd1    equ    $008        ;animspeed
  1353. var_anitel1    equ    $00c        ;animspeed
  1354. var_cprbck    equ    $010        ;copperback
  1355. var_bck        equ    $014        ;background
  1356. var_pic2    equ    $018        ;current picture
  1357. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1358. var_lnd        equ    $020        ;landscape
  1359. var_txt1    equ    $040        ;text
  1360. var_txt16    equ    15*4+var_txt1
  1361. var_vec1    equ    $080        ;vectors
  1362. var_vec16    equ    15*4+var_vec1
  1363. var_fon1    equ    $0c0        ;fonts
  1364. var_fon16    equ    15*4+var_fon1
  1365. var_cols1    equ    $100        ;colorsets
  1366. var_cols16    equ    15*4+var_cols1
  1367. var_obj1    equ    $180        ;objects
  1368. var_obj16    equ    15*4+var_obj1
  1369.  
  1370.     cnop    0,2
  1371. var    ds.b    $300    ;variabelen voor routines
  1372.  
  1373.     
  1374. ;    SECTION    10,CODE_C
  1375.         endc
  1376.  
  1377. ; this is the routine-source
  1378. ;**********************************************************************
  1379.  
  1380.         ifnd    rout
  1381. pic_wid        equ    4        ;wide in bytes
  1382. pic_hgt        equ    6        ;hoogte
  1383. pic_dpt        equ    8        ;number planes
  1384. pic_ani        equ    10        ;aantal effes (anim)
  1385. pic_vew        equ    12        ;viewmode
  1386. pic_cycstr    equ    14        ;cycle start (*4)
  1387. pic_cycend    equ    15        ;cycle end (*4)
  1388. pic_cycspd    equ    16        ;cycle speed (*4)
  1389. pic_cycadd    equ    17        ;cycle add (*4)
  1390. pic_palnum    equ    30        ;aantal kleuren
  1391. pic_pal        equ    32        ;palette start
  1392. pic_palsiz    equ    256*2        ;vaste palette size
  1393. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1394.  
  1395. var_len        equ    $300        ;lengte vartabel
  1396.  
  1397. var__GfxBase    equ    $000        ;graphics lib
  1398. var_pic1    equ    $004        ;current picture
  1399. var_anispd1    equ    $008        ;animspeed
  1400. var_anitel1    equ    $00c        ;animspeed
  1401. var_cprbck    equ    $010        ;copperback
  1402. var_bck        equ    $014        ;background
  1403. var_pic2    equ    $018        ;current picture
  1404. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1405. var_lnd        equ    $020        ;landscape
  1406. var_txt1    equ    $040        ;text
  1407. var_txt16    equ    15*4+var_txt1
  1408. var_vec1    equ    $080        ;vectors
  1409. var_vec16    equ    15*4+var_vec1
  1410. var_fon1    equ    $0c0        ;fonts
  1411. var_fon16    equ    15*4+var_fon1
  1412. var_cols1    equ    $100        ;colorsets
  1413. var_cols16    equ    15*4+var_cols1
  1414. var_obj1    equ    $180        ;objects
  1415. var_obj16    equ    15*4+var_obj1
  1416.  
  1417. vew_wid    equ    44
  1418. vew_hgt    equ    290
  1419. win_hgt    equ    117
  1420. win_str    equ    $1a
  1421.         endc
  1422.  
  1423. ;    Input:
  1424. ;    a0=variabelen tabel
  1425. ;    d0=routinfo
  1426.  
  1427. ;    Output:
  1428. ;    a0=picture
  1429. ;    d1=copperlist
  1430.  
  1431.     SECTION    3,CODE_C
  1432.  
  1433. rot
  1434.     dc.l    'ROUT'
  1435.     movem.l    d2-d7/a1-a6,-(sp)
  1436.  
  1437.     lea    ($dff000).l,a6    ;hardware
  1438.     lea    rot,a5        ;prog base
  1439.  
  1440.     move.l    #32768,d2
  1441.     bsr    getd7
  1442.     clr.l    variabele10-rot(a5)
  1443.     clr.l    variabele11-rot(a5)
  1444.     cmp.b    #1,d7
  1445.     beq    rot.ea
  1446.     move.l    #4,variabele10-rot(a5)    ;raster sinus snelheid
  1447.     move.l    #16,variabele11-rot(a5)    ;raster sinus dichtheid
  1448.  
  1449. rot.ea    
  1450.  
  1451.     move.l    #16384,d2        ;blauw richting
  1452.     bsr    getd7
  1453.     muls    #2,d7
  1454.     btst    #2,d7
  1455.     bne    rot.dc
  1456.     move.l    #1020,d7
  1457. rot.dc
  1458.     move.l    d7,variabele6-rot(a5)
  1459.  
  1460.     move.l    #4096,d2        ;hoogte
  1461.     bsr    getd7
  1462.     muls    #1380,d7
  1463.     move.l    d7,variabele3-rot(a5)
  1464.  
  1465.     move.l    #1024,d2        ;breedte
  1466.     bsr    getd7
  1467.     muls    #6,d7
  1468.     move.l    d7,variabele9-rot(a5)
  1469.  
  1470.     move.l    #512,d2        ;groen richting
  1471.     bsr    getd7
  1472.     muls    #2,d7
  1473.     btst    #2,d7
  1474.     bne    rot.db
  1475.     move.l    #1020,d7
  1476. rot.db
  1477.     move.l    d7,variabele5-rot(a5)
  1478.  
  1479.     move.l    #128,d2        ;hoogte
  1480.     bsr    getd7
  1481.     muls    #1380,d7
  1482.     move.l    d7,variabele2-rot(a5)
  1483.  
  1484.     move.l    #32,d2        ;breedte
  1485.     bsr    getd7
  1486.     muls    #6,d7
  1487.     move.l    d7,variabele8-rot(a5)
  1488.  
  1489.     move.l    #16,d2        ;rood richting
  1490.     bsr    getd7
  1491.     muls    #2,d7
  1492.     btst    #2,d7
  1493.     bne    rot.da
  1494.     move.l    #1020,d7
  1495. rot.da
  1496.     move.l    d7,variabele4-rot(a5)
  1497.  
  1498.     move.l    #4,d2        ;hoogte
  1499.     bsr    getd7
  1500.     muls    #1380,d7
  1501.     move.l    d7,variabele1-rot(a5)
  1502.  
  1503.     move.l    #1,d2        ;breedte
  1504.     bsr    getd7
  1505.     muls    #6,d7
  1506.     move.l    d7,variabele7-rot(a5)
  1507.  
  1508. rot.end
  1509.  
  1510. ;    tst.l    taba+$16c-rot(a5)    ;initialiseren ?
  1511. ;    bne    rot.endb
  1512. ;    bsr    rot.str    
  1513. ;rot.endb
  1514.  
  1515.     move.l    var_cprbck(a0),d1
  1516.     sub.l    #8,d1
  1517.  
  1518.     lea    rot.cop1,a1        ;copperjump adres zetten
  1519.     move.l    rot.buf-rot(a5),d2    ;double buffer
  1520.     eor.l    #rot.cop2-rot.cop1,d2    ;double buffer
  1521.     add.l    d2,a1        ;double buffer
  1522.  
  1523.     move.w    d1,6(a1)
  1524.     swap    d1
  1525.     move.w    d1,2(a1)
  1526.  
  1527.     move.l    a1,a2
  1528.     add.l    #rot.cprbck1ntsc,a2
  1529.     move.l    a1,a3
  1530.     add.l    #rot.cprend1ntsc,a3
  1531.     move.l    a1,a4
  1532.     add.l    #rot.cprbck1,a4
  1533.  
  1534.     cmp.b    #50,var_ntsc(a0)    ;ntsc/pal frequence
  1535.     bne    rot.ntsc
  1536.  
  1537.     move.l    #$8c29fffe,(a2)    ;reset ntsc split
  1538.     move.l    #$f629fffe,(a3)    ;reset ntsc end
  1539.     add.l    #rot.cprbck1,a1
  1540.     move.l    #$c425fffe,d0
  1541.     bra    rot.split
  1542. rot.ntsc
  1543.     move.l    #$c425fffe,(a4)    ;reset pal split
  1544.     move.l    #$00880000,(a3)    ;set ntsc end
  1545.     add.l    #rot.cprbck1ntsc,a1
  1546.     move.l    #$8c29fffe,d0
  1547.  
  1548. rot.split
  1549.     move.l    #$00880000,(a1)    ;set break
  1550.     move.l    var_cprbck(a0),a2
  1551.     cmp.b    #$ff,(a2)        ;menu uit ?
  1552.     bne    rot.a
  1553.     move.l    d0,(a1)
  1554. rot.a
  1555.  
  1556. ;    lea    rot.cprjmp,a1    ;set copperjump naar vt
  1557. ;    move.l    var_cprbck(a0),a2
  1558. ;    move.l    a2,d1
  1559. ;    sub.l    #8,d1
  1560.  
  1561. ;    move.l    a1,a4
  1562. ;    add.l    #rot.cop2-rot.cop1,a4
  1563.     
  1564. ;    move.w    d1,6(a1)
  1565. ;    move.w    d1,6(a4)
  1566. ;    swap    d1
  1567. ;    move.w    d1,2(a1)
  1568. ;    move.w    d1,2(a4)
  1569.  
  1570. ;    lea    rot.cop1,a3
  1571. ;    add.l    #$8548,a3
  1572. ;    move.l    a3,a4
  1573. ;    add.l    #rot.cop2-rot.cop1,a4
  1574.     
  1575. ;    cmp.b    #$ff,(a2)        ;menu uit ?
  1576. ;    beq    rot.b
  1577. ;    move.l    #$00880000,(a3)    ;set break
  1578. ;    move.l    #$00880000,(a4)    ;set break
  1579. ;    bra    rot.a
  1580. ;rot.b
  1581. ;    tst.w    2(a3)        ;al gezet ?
  1582. ;    bne    rot.c
  1583. ;    move.l    #$c425fffe,(a3)
  1584. ;rot.c
  1585. ;    tst.w    2(a4)        ;al gezet ?
  1586. ;    bne    rot.a
  1587. ;    move.l    #$c425fffe,(a4)
  1588. ;rot.a
  1589.  
  1590.     bsr    rot.lop
  1591.  
  1592.     lea    rot.cop1,a0
  1593.     move.l    rot.buf-rot(a5),d1
  1594. ;    eor.l    #rot.cop2-rot.cop1,d1
  1595.     add.l    a0,d1
  1596. ;    move.l    a0,d1
  1597.  
  1598.     sub.l    a0,a0        ;geen pic
  1599. ;    lea    rot.pic,a0        ;picture
  1600.     movem.l    (sp)+,d2-d7/a1-a6
  1601.     rts
  1602.  
  1603. getd7
  1604.     move.w    d0,d1
  1605.     divs    d2,d1
  1606.     and.l    #$ffff,d1        ;182
  1607.     move.l    d1,d7        ;sinuscentre (64)
  1608.     muls    d2,d1
  1609.     sub.w    d1,d0
  1610.     move.l    d0,d6        ;180
  1611.     add.l    #1,d7
  1612.     rts
  1613.  
  1614.     cnop    0,2
  1615.  
  1616. ;rot.cop
  1617. ;rot.cprjmp
  1618. ;    dc.w    $0080,$0000,$0082,$0000
  1619. ;rot.copcol
  1620. ;    ds.b    152*12
  1621. ;rot.cprbck
  1622. ;    ds.b    104*12
  1623. ;    dc.w    $088
  1624. ;    dc.w    $ffff,$fffe
  1625.  
  1626. ;eff_widbyt    equ    4        ;wide in bytes
  1627. ;eff_hgt    equ    6        ;hoogte
  1628. ;eff_plnnum    equ    8        ;number planes
  1629. ;eff_ani    equ    10        ;aantal effes (anim)
  1630. ;eff_cycstr    equ    12        ;cycle start (*4)
  1631. ;eff_cycend    equ    13        ;cycle end (*4)
  1632. ;eff_cycspd    equ    14        ;cycle speed (*4)
  1633. ;eff_cycadd    equ    15        ;cycle add (*4)
  1634. ;eff_pal    equ    28        ;palette start
  1635.  
  1636. ;rot.pic
  1637. ;    dc.l    'PICT'
  1638. ;    dc.w    40,256,1,1
  1639. ;    ds.b    16
  1640. ;    dc.w    $000,$fff
  1641. ;    dcb.b    40*256,240
  1642.  
  1643.  
  1644. ;----------------------------------------------------------------
  1645. ;    Macro's to keep it easy....
  1646. ; (made for snakepit sources by roger from virus)
  1647. ;----------------------------------------------------------------
  1648.  
  1649. ;variabele1 = 920    ;uitslag   rood  (sinus grote)
  1650. ;variabele2 = 2740    ;   "      groen
  1651. ;variabele3 = 1840     ;   "      blauw
  1652. ;variabele4 = 512-2    ;snelheid  rood  (sinus stap vertikaal)
  1653. ;variabele5 = 1;512-2;2    ;   "      groen    ;512= 0 grens
  1654. ;variabele6 = 3;512-2;1    ;   "      blauw
  1655. ;variabele7 = 5    ;dichtheid rood  (sinus stap horizontaal)
  1656. ;variabele8 = 6;8    ;   "      groen
  1657. ;variabele9 = 7;7    ;   "      blauw
  1658.  
  1659. variabele12 = %111    ;RGB switch
  1660.  
  1661. rastwidth    = 50
  1662. copperlengte    = (rastwidth*4)+8
  1663.  
  1664. breedte    = (352)/8
  1665. hoogte    = 270
  1666. ystart    = $20
  1667. xstart    = $09
  1668.  
  1669. store: macro
  1670.     movem.l    d0-d7/a0-a6,-(a7)
  1671.     endm
  1672. unstore: macro
  1673.     movem.l    (a7)+,d0-d7/a0-a6
  1674.     endm
  1675.  
  1676. ;rot.str
  1677. ;j:
  1678. ;
  1679. ;start:
  1680. ;    store
  1681. ;    move.l    #$dff000,a6
  1682. ;    bsr    inits
  1683. ;    unstore
  1684. ;    rts
  1685. ;
  1686. rot.lop
  1687. loop:
  1688.     store
  1689.     move.l    #$dff000,a6
  1690.     bsr    irq
  1691.     unstore
  1692.     rts
  1693.  
  1694. irq:
  1695.     lea    rot.cop1,a0        ;get copperlist 1
  1696.     add.l    rot.buf-rot(a5),a0
  1697.     eor.l    #rot.cop2-rot.cop1,rot.buf-rot(a5)    ;double buffer
  1698.  
  1699.     lea    rot.cop1+8+10,a3    ;get pointer to value $180
  1700.     add.l    rot.buf-rot(a5),a3    ;double buffer
  1701.     move.l    a3,d3
  1702.  
  1703.     lea    sin,a4        ;get sinus dat
  1704.     move.l    #rastwidth-1,d7
  1705.  
  1706.     lea    mod4,a0
  1707.  
  1708.     move.l    variabele6-rot(a5),d0    ;sinus step blue
  1709.     add.l    d0,(a0)        
  1710.     cmp.l    #sinlt,(a0)
  1711.     blo.s    ok1
  1712.     sub.l    #sinlt,(a0)
  1713. ok1:
  1714.     move.l    variabele5-rot(a5),d0    ;sinus step blue
  1715.     add.l    d0,4(a0)        ;sinus step green
  1716.     cmp.l    #sinlt,4(a0)
  1717.     blo.s    ok2
  1718.     sub.l    #sinlt,4(a0)
  1719. ok2:
  1720.     move.l    variabele4-rot(a5),d0    ;sinus step blue
  1721.     add.l    d0,8(a0)        ;sinus step red
  1722.     cmp.l    #sinlt,8(a0)
  1723.     blo.s    ok3
  1724.     sub.l    #sinlt,8(a0)
  1725. ok3:
  1726.  
  1727.     move.l    (a0),d0
  1728.     move.l    4(a0),d1
  1729.     move.l    8(a0),d2
  1730.  
  1731.     move.l    variabele3-rot(a5),d4    ;blue sinus size
  1732.     move.l    variabele2-rot(a5),d5    ;green sinus size
  1733.     move.l    variabele1-rot(a5),d6    ;red sinus size
  1734.  
  1735.     move.l    d5,-(sp)
  1736.     move.l    #(($16c)/2+($16c-hoogte)),d5    ;centre color sinus
  1737.     and.l    #-2,d5
  1738.     lea    taba,a3
  1739.     add.l    d5,a3
  1740.     move.l    (sp)+,d5
  1741.  
  1742.     clr.w    $64(a6)        ;bltamod
  1743.     clr.w    $62(a6)        ;bltbmod
  1744.     clr.w    $60(a6)        ;bltcmod
  1745.     move.w    #copperlengte-2,$66(a6)    ;bltdmod
  1746.  
  1747. rgb    equ    (variabele12&4*%10101010/%100)!(variabele12&2*%1100110)!(variabele12&1*%11110000)
  1748.  
  1749.     move.w    #%1000111100000000+rgb,$40(a6)    ;bltcon0
  1750.                     ;bitshift 
  1751.                     
  1752.     move.w    #%0100000000000000,$42(a6)    ;bltcon1
  1753.  
  1754.     move.w    #-1,$44(a6)            ;bltafwm
  1755.     move.w    #-1,$46(a6)            ;bltafwm
  1756.  
  1757. loop5:
  1758.     move.l    d7,-(sp)
  1759.     
  1760.     clr.l    d7
  1761.     cmp.l    #sinlt,d0
  1762.     blo.s    ok1a
  1763.     sub.l    #sinlt,d0
  1764. ok1a
  1765.     move    (a4,d0),d7        ;get sinus value
  1766.     muls    d4,d7
  1767.     swap    d7
  1768.     lea    (a3,d7),a0        ;get color value
  1769.  
  1770.     clr.l    d7
  1771.     cmp.l    #sinlt,d1
  1772.     blo.s    ok1b
  1773.     sub.l    #sinlt,d1
  1774. ok1b
  1775.     move    (a4,d1),d7
  1776.     muls    d5,d7
  1777.     swap    d7
  1778.     lea    $78(a3,d7),a1
  1779.  
  1780.     clr.l    d7
  1781.     cmp.l    #sinlt,d2
  1782.     blo.s    ok1c
  1783.     sub.l    #sinlt,d2
  1784. ok1c
  1785.     move    (a4,d2),d7
  1786.     muls    d6,d7
  1787.     swap    d7
  1788.     lea    -$78(a3,d7),a2
  1789.  
  1790.     move.l    (sp)+,d7
  1791.  
  1792.     move.l    a0,$50(a6)        ;bltapt
  1793.     move.l    a1,$4c(a6)        ;bltbpt
  1794.     move.l    a2,$48(a6)        ;bltcpt
  1795.     move.l    d3,$54(a6)        ;bltdpt
  1796.  
  1797.     move.w    #64*hoogte+1,$58(a6)    ;bltsize !!!!
  1798.  
  1799. bltwait.bb
  1800.     btst    #14-8,($dff002).l
  1801.     bne    bltwait.bb
  1802.  
  1803.     add.l    variabele9-rot(a5),d0    ;blue sinus step horizontal
  1804.     add.l    variabele8-rot(a5),d1    ;green sinus step horizontal
  1805.     add.l    variabele7-rot(a5),d2    ;red sinus step horizontal
  1806.     add.l    #4,d3
  1807.     dbra    d7,loop5
  1808.  
  1809.     lea    rot.cop1+8+1,a3
  1810.     add.l    rot.buf-rot(a5),a3
  1811.     lea    lrsin,a0
  1812.  
  1813.     move.l    mod20-rot(a5),d0
  1814.     add.l    variabele10-rot(a5),d0
  1815.     cmp.l    #sinlen,d0
  1816.     blo.s    ok4
  1817.     sub.l    #sinlen,d0
  1818. ok4:
  1819.     move.l    d0,mod20-rot(a5)
  1820.  
  1821.     move.w    #hoogte-1,d7
  1822. lx1:
  1823.     tst.b    1(a3)
  1824.     beq    lx1a
  1825.  
  1826.     move.b    (a0,d0),(a3)
  1827.     add.l    variabele11-rot(a5),d0
  1828.     cmp.l    #sinlen,d0
  1829.     blo.s    ok4a
  1830.     sub.l    #sinlen,d0
  1831. ok4a:
  1832.     
  1833. lx1a
  1834.     lea    copperlengte(a3),a3
  1835.     dbf    d7,lx1
  1836.     rts
  1837.  
  1838. ;inits:
  1839. ;    
  1840. ;    move.l    #$01020000,d1    ;plane color
  1841. ;    move.l    #$01800180,d2    ;background color
  1842. ;
  1843. ;    lea    rot.cop1+8,a0
  1844. ;    move.l    #ystart,d0        ;y raster start
  1845. ;    clr.w    d5
  1846. ;
  1847. ;    move.w    #hoogte-1,d4    ;fill copperlist
  1848. ;loop1:
  1849. ;    move.b    d0,(a0)+
  1850. ;    move.b    #xstart,(a0)+
  1851. ;    move.w    #$fffe,(a0)+
  1852. ;    move.l    d1,(a0)+
  1853. ;
  1854. ;    move.w    #rastwidth-1,d3
  1855. ;loop2:    move.w    d2,(a0)+
  1856. ;    swap    d2
  1857. ;    move.w    d5,(a0)+
  1858. ;    dbra    d3,loop2
  1859. ;
  1860. ;    add.l    #1,d0
  1861. ;    dbra    d4,loop1
  1862. ;
  1863. ;    lea    taba,a0
  1864. ;    clr.l    d0
  1865. ;    move.w    #($16c)/2-1,d7
  1866. ;loop7:
  1867. ;    move.w    (a0),d0
  1868. ;    move.w    d0,($16c)(a0)
  1869. ;    move.w    d0,($16c)*2(a0)
  1870. ;    add.l    #2,a0
  1871. ;    dbra    d7,loop7
  1872. ;
  1873. ;    move    #sinlen/2-1,d7
  1874. ;    clr.l    d0
  1875. ;    lea    sin,a0
  1876. ;    lea    lrsin,a1
  1877. ;mlrt:
  1878. ;    move.w    (a0)+,d0
  1879. ;    muls    #$ff,d0        ;*256
  1880. ;    swap    d0        ;/65536
  1881. ;    add.w    #72,d0        ;+72
  1882. ;    move.w    d0,d1
  1883. ;    add.w    #$f,d1        ;+15
  1884. ;    lsr.w    #2,d0        ;/4
  1885. ;    add.w    d0,d0        ;++
  1886. ;    add.w    #1,d0        ;+1
  1887. ;    lsl.w    #8,d0        ;*256
  1888. ;    add.w    d1,d0
  1889. ;    move.w    d0,(a1)+
  1890. ;    dbra    d7,mlrt
  1891. ;
  1892. ;    lea    rot.cop1,a0        ;copy to double buffer copper
  1893. ;    lea    rot.cop2,a1
  1894. ;    move.w    #(rot.cop2-rot.cop1)/4-1,d0
  1895. ;ic2loop:
  1896. ;    move.l    (a0)+,(a1)+
  1897. ;    dbra    d0,ic2loop
  1898. ;    rts
  1899.  
  1900. mod4:        dc.l    0
  1901. mod5:        dc.l    0
  1902. mod6:        dc.l    0
  1903. mod20:        dc.l    0
  1904. rot.buf:    dc.l    0
  1905.  
  1906. variabele1 dc.l  0;4*1380;920    ;uitslag   rood  (sinus grote) 1840
  1907. variabele2 dc.l  0;3*1380;2*2740    ;   "      groen
  1908. variabele3 dc.l  0;2*1380;2*1840     ;   "      blauw
  1909.  
  1910. variabele4 dc.l  0;2*4        ;snelheid  rood  (sinus stap vertikaal)
  1911. variabele5 dc.l  0;1*4;2*1    ;   "      groen    ;512= 0 grens
  1912. variabele6 dc.l  0;2*4;2*3    ;   "      blauw
  1913.  
  1914. variabele7 dc.l  0;4*4        ;dichtheid rood  (sinus stap horizontaal)
  1915. variabele8 dc.l  0;3*4;2*6    ;   "      groen
  1916. variabele9 dc.l  0;2*4;2*7    ;   "      blauw
  1917.  
  1918. variabele10 dc.l 0;2        ;snelheid  y-sinus
  1919. variabele11 dc.l 0;8;26;28     ;dichtheid y-sinus
  1920.  
  1921.  
  1922. taba:
  1923.     incbin    'videotracker:bin/plstab.bin'
  1924.  
  1925. ;    dc.w    $100,$100,$100,$100,$100
  1926. ;    dc.w    $200,$200,$200,$200
  1927. ;    dc.w    $300,$300,$300,$300
  1928. ;    dc.w    $400,$400,$400
  1929. ;    dc.w    $500,$500,$500
  1930. ;    dc.w    $600,$600,$600
  1931. ;    dc.w    $700,$700,$700
  1932. ;    dc.w    $800,$800,$800
  1933. ;    dc.w    $900,$900,$900
  1934. ;    dc.w    $a00,$a00,$a00
  1935. ;    dc.w    $b00,$b00,$b00
  1936. ;    dc.w    $c00,$c00,$c00
  1937. ;    dc.w    $d00,$d00
  1938. ;    dc.w    $e00,$e00
  1939. ;    dc.w    $f00,$f00,$f00
  1940. ;    dc.w    $e00,$e00
  1941. ;    dc.w    $d00,$d00
  1942. ;    dc.w    $c00,$c00,$c00
  1943. ;    dc.w    $b00,$b00,$b00
  1944. ;    dc.w    $a00,$a00,$a00
  1945. ;    dc.w    $900,$900,$900
  1946. ;    dc.w    $800,$800,$800
  1947. ;    dc.w    $700,$700,$700
  1948. ;    dc.w    $600,$600,$600
  1949. ;    dc.w    $500,$500,$500
  1950. ;    dc.w    $400,$400,$400
  1951. ;    dc.w    $300,$300,$300,$300
  1952. ;    dc.w    $200,$200,$200,$200
  1953. ;    dc.w    $100,$100,$100,$100,$100
  1954. ;    dc.w    $100,$100,$100,$100,$100
  1955. ;    dc.w    $200,$200,$200,$200
  1956. ;    dc.w    $300,$300,$300,$300
  1957. ;    dc.w    $400,$400,$400
  1958. ;    dc.w    $500,$500,$500
  1959. ;    dc.w    $600,$600,$600
  1960. ;    dc.w    $700,$700,$700
  1961. ;    dc.w    $800,$800,$800
  1962. ;    dc.w    $900,$900,$900
  1963. ;    dc.w    $a00,$a00,$a00
  1964. ;    dc.w    $b00,$b00,$b00
  1965. ;    dc.w    $c00,$c00,$c00
  1966. ;    dc.w    $d00,$d00
  1967. ;    dc.w    $e00,$e00
  1968. ;    dc.w    $f00,$f00,$f00
  1969. ;    dc.w    $e00,$e00
  1970. ;    dc.w    $d00,$d00
  1971. ;    dc.w    $c00,$c00,$c00
  1972. ;    dc.w    $b00,$b00,$b00
  1973. ;    dc.w    $a00,$a00,$a00
  1974. ;    dc.w    $900,$900,$900
  1975. ;    dc.w    $800,$800,$800
  1976. ;    dc.w    $700,$700,$700
  1977. ;    dc.w    $600,$600,$600
  1978. ;    dc.w    $500,$500,$500
  1979. ;    dc.w    $400,$400,$400
  1980. ;    dc.w    $300,$300,$300,$300
  1981. ;    dc.w    $200,$200,$200,$200
  1982. ;    dc.w    $100,$100,$100,$100,$100
  1983.  
  1984. ;    ds.b    $16c*2
  1985. taba.e
  1986.  
  1987.     cnop    0,2
  1988. sin:
  1989.     incbin    "videotracker:bin/plssin.bin"
  1990.  
  1991. sinlt        = 1024
  1992. sinlen        = 1024
  1993.  
  1994. lrsin:
  1995.     incbin    "videotracker:bin/plslrsin.bin"
  1996. lrsin.e
  1997.  
  1998. rot.cprbck1        equ    (copperlengte*164)+8
  1999. rot.cprbck1ntsc    equ    (copperlengte*108)+8
  2000. rot.cprend1        equ    (copperlengte*270)+8
  2001. rot.cprend1ntsc    equ    (copperlengte*214)+8
  2002.  
  2003.     cnop    0,2
  2004. rot.cop1:
  2005. rot.cop
  2006. rot.cprjmp
  2007. ;    dc.w    $80,0,$82,0
  2008. ;    dcb.b    copperlengte*164,0
  2009. ;    dcb.b    copperlengte*106,0
  2010. ;    dc.w    $88,0
  2011. ;    dc.l    $01800040,-2
  2012.     incbin    'videotracker:bin/plscop.bin'
  2013.  
  2014.     cnop    0,2
  2015. rot.cop2:
  2016. ;    dcb.b    rot.cop2-rot.cop1
  2017.     incbin    'videotracker:bin/plscop.bin'
  2018. rot.cop2.e
  2019.  
  2020.  
  2021. rot.e
  2022.  
  2023. ;**********************************************************************
  2024.  
  2025. ;and here are the incbin-files....
  2026.  
  2027.         ifd    rout
  2028. ;        cnop    0,2
  2029. ;rotinc
  2030. ;        incbin    'videotracker:effect/skeleton_org.set'
  2031.         endc
  2032.         
  2033.